#include "stm32f4xx.h"
#include <stdio.h>
#include <string.h> 

#include "./usart/bsp_usart_debug.h"

#include "./Utility/delay.h"
#include "./Ethernet/W5500/socket.h"	
#include "wizchip_conf.h"
#include "tcp.h"

#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "delay.h"
#include "uart4.h"
#include "w5500.h"
#include "tcp.h"


// pd1  RCC_AHB1Periph_GPIOD

void buzzer_init()
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
	GPIO_InitTypeDef buzzer;
	buzzer.GPIO_Pin =  GPIO_Pin_1;
	buzzer.GPIO_Mode = GPIO_Mode_OUT;   // 模式 输入输出 复用或上下拉
	buzzer.GPIO_OType = GPIO_OType_PP;  // 推挽输出
	buzzer.GPIO_Speed = GPIO_Speed_50MHz;
	buzzer.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOD,&buzzer);
}


void led_init()
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
	GPIO_InitTypeDef led;
	led.GPIO_Pin =  GPIO_Pin_2;
	led.GPIO_Mode = GPIO_Mode_OUT;   // 模式 输入输出 复用或上下拉
	led.GPIO_OType = GPIO_OType_PP;  // 推挽输出
	led.GPIO_Speed = GPIO_Speed_50MHz;
	led.GPIO_PuPd = GPIO_PuPd_NOPULL;
	GPIO_Init(GPIOB,&led);
}

int main(void)
{
	// 系统时钟初始化
	SystemInit();
	// 初始化串口
	Debug_USART_Config();
	// delay初始化
	delay_init(168);
	// led初始化
	led_init();
	// 读卡器初始化
	UART4_Config();
	// 5500 spi初始化
	gpio_for_w5500_config();
	// reset 5500
	reset_w5500();
	// 5500 初始化
	mac_set();
	// 设置5500 ip
	set_w5500_ip();
	// 5500 接收缓冲区初始化
	socket_buf_init(txsize, rxsize);
	while(1)
	{
		do_tcp_server();
		GPIO_SetBits(GPIOB,GPIO_Pin_2);
		//do_tcp_server();
		
		
		//printf("mcu start\r\n");
		delay_ms(500);
	}
}
